<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>大事件-登录/注册</title>
  <!-- 1. 导入 LayUI 的样式 -->
  <link rel="stylesheet" href="./assets/lib/layui/css/layui.css" />
  <!-- 2. 导入自己的样式表 -->
  <link rel="stylesheet" href="./assets/css/login.css" />
</head>

<body>
  <!-- 3. 头部的 Logo 区域 -->
  <!-- layui-main => 设置版心  -->
  <div class="layui-main">
    <img src="./assets/images/logo.png" alt="" />
  </div>

  <!-- 4. 登录注册区域 -->
  <div class="loginAndRegBox">
    <!-- 4.1 设置标题 -->
    <div class="title-box"></div>

    <!-- 4.2 登录的div -->
    <div class="login-box">
      <!-- 登录的表单 -->
      <form class="layui-form" id="form_login">
        <!-- 4.2.1 用户名 -->
        <div class="layui-form-item">
          <!-- 设置图标 -->
          <i class="layui-icon layui-icon-username"></i>
          <input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off"
            class="layui-input" />
        </div>
        <!-- 4.2.2 密码 -->
        <div class="layui-form-item">
          <!-- 设置图标 -->
          <i class="layui-icon layui-icon-password"></i>
          <input type="password" name="password" required lay-verify="required|pwd" placeholder="请输入密码"
            autocomplete="off" class="layui-input" />
        </div>
        <!-- 4.2.3 登录按钮 -->
        <div class="layui-form-item">
          <!-- 注意：表单提交按钮和普通按钮的区别，就是 lay-submit 属性 -->
          <button class="layui-btn layui-btn-fluid layui-btn-normal" lay-submit>登录</button>
        </div>

        <!-- 4.2.3 注册跳转按钮 -->
        <!-- <a href="javascript:;" id="link_reg">去注册账号</a> -->
        <div class="layui-form-item links">
          <a href="javascript:;" id="link_reg">去注册账号</a>
        </div>
      </form>
    </div>

    <!-- 4.3 注册的div -->
    <div class="reg-box">
      <!-- 注册的表单 -->
      <form class="layui-form" id="form_reg">
        <!-- 4.3.1 用户名 -->
        <div class="layui-form-item">
          <!-- 设置图标 -->
          <i class="layui-icon layui-icon-username"></i>
          <input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off"
            class="layui-input" />
        </div>
        <!-- 4.3.2 密码 -->
        <div class="layui-form-item">
          <!-- 设置图标 -->
          <i class="layui-icon layui-icon-password"></i>
          <input type="password" name="password" required lay-verify="required|pwd" placeholder="请输入密码"
            autocomplete="off" class="layui-input" />
        </div>
        <!-- 4.3.3 密码确认框 -->
        <div class="layui-form-item">
          <!-- 设置图标 -->
          <i class="layui-icon layui-icon-password"></i>
          <input type="password" name="repassword" required lay-verify="required|pwd|repwd" placeholder="再次确认密码"
            autocomplete="off" class="layui-input" />
        </div>
        <!-- 4.3.4 登录跳转按钮 -->
        <div class="layui-form-item">
          <!-- 注意：表单提交按钮和普通按钮的区别，就是 lay-submit 属性 -->
          <button class="layui-btn layui-btn-fluid layui-btn-normal" lay-submit>注册</button>
        </div>
        <div class="layui-form-item links">
          <a href="javascript:;" id="link_login">去登录</a>
        </div>
      </form>
    </div>
  </div>
</body>
<!-- 导入 Layui 的JS文件 -->
<script src="./assets/lib/layui/layui.all.js"></script>
<!-- 导入 JQuery -->
<script src="./assets/lib/jquery.js"></script>
<!-- 导入自己封装的 baseAPI.js -->
<script src="./assets/js/baseAPI.js"></script>
<script>
  $(function () {
    // 1. 点击"去注册账号"的链接
    $('#link_reg').on('click', function () {
      // 隐藏登录，展示注册
      $('.login-box').hide()
      $('.reg-box').show()
    })

    // 2. 点击"去登录"的链接
    $('#link_login').on('click', function () {
      // 隐藏注册，展示登录
      $('.reg-box').hide()
      $('.login-box').show()
    })

    // 3. 从 layui 中获取 form 对象
    let form = layui.form
    // 4. 通过 form.verify() 函数自定义校验规则
    form.verify({
      // 自定义了一个叫做 pwd 校验规则
      pwd: [/^[\S]{6,12}$/, '密码必须6到12位，且不能出现空格'],
      // 校验两次密码是否一致的规则
      repwd: function (value) {
        // 通过形参拿到的是确认密码框中的内容
        // 还需要拿到密码框中的内容
        // [name=password] 的意思是拿到带有属性值为'password'的属性的元素
        // 然后进行一次等于的判断
        // 如果判断失败,则return一个提示消息即可
        let pwd = $('.reg-box [name=password]').val()
        if (pwd !== value) {
          return '两次密码不一致！'
        }
      }
    })

    // 5. 获取到 layer 内置模块
    let layer = layui.layer
    // 6. 监听注册表单的提交事件
    $('#form_reg').on('submit', function (e) {
      // 6.1 阻止默认的提交行为
      e.preventDefault()
      // 5.2 发起Ajax的POST请求
      let data = {
        username: $('#form_reg [name=username]').val(),
        password: $('#form_reg [name=password]').val()
      }
      $.post('/api/reguser', data, function (res) {
        // 使用layui弹框来提升注册状态内容
        if (res.status !== 0) {
          return layer.msg(res.message)
        }
        layer.msg('注册成功，请登录！')
        // 模拟人的点击行为 跳转登录页面
        $('#link_login').click()
      })
    })

    // 7. 监听登录表单的提交事件
    $('#form_login').submit(function (e) {
      // 7.1 阻止默认提交行为
      e.preventDefault()
      // 这里使用$.ajax来试试
      $.ajax({
        url: '/api/login',
        method: 'POST',
        // 7.2 快速获取表单中的数据
        // 如果用这种方式这里要注意在from里每个表单元素的name必须和接口入参要求的参数名一致
        data: $(this).serialize(),
        success: function (res) {
          if (res.status !== 0) {
            return layer.msg('登录失败！')
          }
          layer.msg('登录成功！')
          // 7.3 将登录成功得到的 token 字符串，保存到 localStorage 中
          localStorage.setItem('token', res.token)
          // 7.4 跳转到后台主页
          location.href = '/index.html'
        }
      })
    })
  })
</script>

</html>